int maxentlength = 8;
len = gbfread(buf, 1, MY_CBUF_SZ - maxentlength, fd);
done = gbfeof(fd) || !len;
+// fprintf(stderr, "%d/%d\n", len, done);
buf[len] = '\0';
+ if (len < maxentlength) {
+ maxentlength = len;
+ }
badchar = buf+len-maxentlength;
badchar = strchr( badchar, '&' );
extra = maxentlength - 1; /* for terminator */
*/
int
-xvasprintf(char **strp, const char *fmt, va_list args)
+xasprintf(char **strp, const char *fmt, ...)
{
/* From http://perfec.to/vsnprintf/pasprintf.c */
/* size of first buffer malloc; start small to exercise grow routines */
char *newbuf;
size_t nextsize = 0;
int outsize;
- va_list tmp;
+ va_list args;
bufsize = 0;
for (;;) {
return -1;
}
- va_copy(tmp, args);
- outsize = vsnprintf(buf, bufsize, fmt, tmp);
- va_end(tmp);
+ va_start(args, fmt);
+ outsize = vsnprintf(buf, bufsize, fmt, args);
+ va_end(args);
if (outsize == -1) {
/* Clear indication that output was truncated, but no
return 0;
}
-int
-xasprintf(char **strp, const char *fmt, ...)
-{
- va_list args;
- int rval;
-
- va_start(args, fmt);
- rval = xvasprintf(strp, fmt, args);
- va_end(args);
-
- return rval;
-
-}
-
/*
* Duplicate a pascal string into a normal C string.
*/